<!DOCTYPE html>
<html lang="zh-CH" >
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="author" content="" />
	
	
	
	<title>Unity官方文档翻译之 AssetBundle 的依赖关系 ｜ zansimple</title>
	
    
    
    <meta name="description" content="正文 AssetBundle的依赖关系 在一个 assetbundle 中有一个或多个 UnityEngine.Objects 引用了其他 assetbundle 中的 UnityEngine.Object, 那么这两个 assetbundle 之间就产生了依赖关系。如果 UnityEngine.ObjectA 对象在任何 assetbundle 中都不包含对 UnityEngine.ObjectA 的引用，则不会产生依赖。 在这种情况下，（指的是前面两个例子的后者，既不产生依赖的情况），被依赖对象（ UnityEngine.ObjectB ）将被拷贝进你创建的 AssetBundle（指包含 UnityEngine.ObjectA 的 AssetBundle ）。如果多个 assetbundle 中的多个 UnityEngine.Object 包含对同一个对象的引用，那么每一个对该对象有依赖关系的 bundle 都将创建自己的对象副本，并将其打包到 AssetBundle 中。 如果一个 assetbundle 包有依赖性，很重要的一点是，那些包含了被依赖对象的 AssetBundles，需要在你想要实例化的对象的加载之前加载。Unity 不会自动帮你加载这些依赖。 下面有个例子，assetbundle 1 中的一个 materail 引用了 assetbundle 2 中的一个 Texture: 在加载 ssetbundle 1 中的 aterail 之前需要先将 assetbundle 2 中的 Texture 加载到内存。按照什么样的顺序加载 assetbundle1 和 assetbundle2 不重要，想从 Bundle1 中加载材质前，你需要先加载 Bundle2。 在下一节中，我们将讨论如何使用我们在上一节中提到的 AssetBundleManifest，在运行时确定并加载依赖。" />
    

    

	
    
    <link rel="shortcut icon" href="https://lenzan.github.io/images/favicon.ico" />

    <link rel="stylesheet" type="text/css" media="screen" href="https://lenzan.github.io/css/normalize.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="https://cdn.jsdelivr.net/npm/animate.css@4.1.0/animate.min.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="https://lenzan.github.io/css/zozo.css" />
	<link rel="stylesheet" type="text/css" media="screen" href="https://cdn.jsdelivr.net/npm/remixicon@2.5.0/fonts/remixicon.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="https://lenzan.github.io/css/highlight.css" />

    
    
</head>

<body>
    <div class="main animate__animated animate__fadeInDown">
        <div class="nav_container animated fadeInDown">
    <div class="site_nav" id="site_nav">
        <ul>
            
            <li>
                <a href="/">首页</a>
            </li>
            
            <li>
                <a href="/">unity</a>
            </li>
            
            <li>
                <a href="/">归档</a>
            </li>
            
            <li>
                <a href="/">关于</a>
            </li>
            
        </ul>
    </div>
    <div class="menu_icon">
        <a id="menu_icon"><i class="ri-menu-line"></i></a>
    </div>
</div>
        <div class="header animated fadeInDown">
    <div class="site_title_container">
        <div class="site_title">
            <h1>
                <a href="https://lenzan.github.io/">
                    <span>zansimple</span>
                    <img src="https://lenzan.github.io/images/logo.svg" />
                </a>
            </h1>
        </div>
        <div class="description">
            <p class="sub_title">专注于Unity虚拟现实开发，游戏开发</p>
            <div class="my_socials">
                
                <a href="https://lenzan.github.io/index.xml" type="application/rss+xml" title="rss" target="_blank"><i
                        class="ri-rss-fill"></i></a>
            </div>
        </div>
    </div>
</div>
        <div class="content">
            <div class="post_page">
                <div class="post animate__animated animate__fadeInDown">
                    <div class="post_title post_detail_title">
                        <h2><a href='/posts/assetbundle/assetbundle-Dependencies/'>Unity官方文档翻译之 AssetBundle 的依赖关系</a></h2>
                        <span class="date">2018.05.16</span>
                    </div>
                    <div class="post_content markdown"><!-- raw HTML omitted -->
<h1 id="正文">正文</h1>
<h3 id="assetbundle的依赖关系">AssetBundle的依赖关系</h3>
<p>在一个 assetbundle 中有一个或多个 UnityEngine.Objects 引用了其他 assetbundle 中的 UnityEngine.Object, 那么这两个 assetbundle 之间就产生了依赖关系。如果 UnityEngine.ObjectA 对象在任何 assetbundle 中都不包含对 UnityEngine.ObjectA 的引用，则不会产生依赖。
在这种情况下，（指的是前面两个例子的后者，既不产生依赖的情况），被依赖对象（ UnityEngine.ObjectB ）将被拷贝进你创建的      AssetBundle（指包含 UnityEngine.ObjectA 的 AssetBundle ）。如果多个 assetbundle 中的多个 UnityEngine.Object 包含对同一个对象的引用，那么每一个对该对象有依赖关系的 bundle 都将创建自己的对象副本，并将其打包到 AssetBundle 中。
如果一个 assetbundle 包有依赖性，很重要的一点是，那些包含了被依赖对象的 AssetBundles，需要在你想要实例化的对象的加载之前加载。Unity 不会自动帮你加载这些依赖。
下面有个例子，assetbundle 1 中的一个 materail 引用了 assetbundle 2 中的一个 Texture:
在加载 ssetbundle 1 中的 aterail 之前需要先将 assetbundle 2 中的 Texture 加载到内存。按照什么样的顺序加载 assetbundle1 和  assetbundle2 不重要，想从 Bundle1 中加载材质前，你需要先加载 Bundle2。
在下一节中，我们将讨论如何使用我们在上一节中提到的 AssetBundleManifest，在运行时确定并加载依赖。</p>
</div>
                    <div class="post_footer">
                        
                        <div class="meta">
                            <div class="info">
                                <span class="field tags">
                                    <i class="ri-stack-line"></i>
                                    
                                    <a href="https://lenzan.github.io/tags/Unity3D/">Unity3D</a>
                                    
                                    <a href="https://lenzan.github.io/tags/AssetBundle/">AssetBundle</a>
                                    
                                </span>
                            </div>
                        </div>
                        
                    </div>
                </div>
                
                
            </div>
        </div>
    </div>
    <a id="back_to_top" href="#" class="back_to_top"><span>△</span></a>
    <footer class="footer">
    <div class="powered_by">
        <a href="https://varkai.com">Designed by VarKai,</a>
        <a href="http://www.gohugo.io/">Proudly published with Hugo</a>
    </div>

    <div class="footer_slogan">
        <span></span>
    </div>
</footer>
    <script src="https://lenzan.github.io/js/jquery-3.5.1.min.js"></script>
<link href="https://lenzan.github.io/css/fancybox.min.css" rel="stylesheet">
<script src="https://lenzan.github.io/js/fancybox.min.js"></script>
<script src="https://lenzan.github.io/js/zozo.js"></script>






</body>

</html>